The Internet is a vast collection of computing resources, interconnected as a network, from sites around the world. It is used every day by millions of people. The World Wide Web (referred to herein as the “Web”) is that portion of the Internet that uses the HyperText Transfer Protocol (“HTTP”) as a protocol for exchanging messages. (Alternatively, the “HTTPS” protocol can be used, where this protocol is a security-enhanced version of HTTP.)
A user of the Internet typically accesses and uses the Internet by establishing a network connection through the services of an Internet Service Provider (ISP). An ISP provides computer users the ability to dial a telephone number using their computer modem (or other connection facility, such as satellite transmission), thereby establishing a connection to a remote computer owned or managed by the ISP. This remote computer then makes services available to the user's computer. Typical services include: providing a search facility to search throughout the interconnected computers of the Internet for items of interest to the user; a browse capability, for displaying information located with the search facility; and an electronic mail facility, with which the user can send and receive mail messages from other computer users.
The user working in a Web environment will have software running on his computer to allow him to create and send requests for information, and to see the results. These functions are typically combined in a software package that is referred to as a “Web browser” or “browser”. After the user has created his request using the browser, the request message is sent out into the Internet for processing. The target of the request message is one of the interconnected computers in the Internet network. That computer will receive the message, attempt to find the data satisfying the user's request, format that data for display with the user's browser, and return the formatted response to the browser software running on the user's computer.
This is an example of a client-server model of computing, where the machine at which the user requests information is referred to as the client, and the computer that locates the information and returns it to the client is the server. In the Web environment, the server is referred to as a “Web server”.
The HTTP communications protocol uses a request/response paradigm, where the electronic messages sent between communicating computers can be categorized as either requests for information, or responses to those requests, as discussed above.
Requests typically take the form URLs (Universal Resource Locators). A URL is essentially an address of a server on the Internet and the name of the particular file stored at that server that is requested. It will be understood by those of skill in the art that, although the preceding sentence refers to files being “stored” at servers, many servers are smart enough to actually generate requested files in response to receipt of a request by pulling data from various databases. Other server or server systems do, in fact, have files stored therein which are retrieved and returned in response to a request for such files.
HTTP does not provide for maintaining any type of state information about the communications, instead treating each request/response pair as a separate and unrelated transaction. However, there are many cases for which it is desirable to associate multiple http requests from a single client to a single server with each other so as to be able to maintain state information.
Some example scenarios where state information is an absolute necessity include on-line shopping, searching with successive refinement of search terms, and gathering user profile information. In on-line shopping, a user typically accesses a seller's on-line catalog, which will be displayed to him as some number of Web pages (where a “Web page” is a file compromising the information displayable in response to a user's request). Typically, the user can display a separate page of information related to each product, to read about the details of that product. Each time the user requests to see a page, a separate HTTP request is typically sent to the Web server where the seller's product catalog is stored. This request indicates that data for a specific product should be
gathered and sent to the client machine for display. When the user wishes to order a product, he indicates his selection by clicking on an “Order” button of some type, using a mouse, for example. This causes another request message to be sent to the server, where the request indicates that this is an order for the particular item. Without the ability to maintain state information, each of these requests would be treated as unrelated to the others. There would be no efficient way to collect orders for more than one item into one large order. Further, there would be no efficient way to allow the user to enter his name, address, credit card number, etc. only one time, and have that information apply to all the ordered items.
In addition, it also is frequently desirable to be able to maintain state information across multiple visits by a particular individual to a particular Web site. For instance, many individuals visit one or more particular Web sites repeatedly. It is often desirable to determine the identity of the particular individual visiting the site so that certain information about that particular user that had been gathered during a previous visit to the Web site can be applied to the current visit. Merely as an example, it may be desirable for a retail Web site to store all of the information that it typically needs to process a purchase order by an individual and associate that information with the individual every time he or she visits the Web site. Then the individual will not need to re-enter the same information, such as name, credit card No., billing address, shipping address, etc., every time he or she visits the Web site and purchases an item.
Accordingly, ways have been developed outside of the http protocol itself for maintaining such state information. One of the earliest ways developed for doing this was the use of cookies. Cookies are small data files that a server sends to a client machine and that the client's Web browser knows to store in a designated cookie folder or in the browser memory at the client computer. Thereafter, when that client sends a http request for a Web page to that server, the client's Web browser software sends the cookies associated with that URL to the server. The cookie might contain any particular information that the Web site operator feels the need to have in order to better service its customers. As an example, many Web sites allow individual clients to customize Web pages, such as a daily, electronic, newspaper containing only those articles that meet certain criteria selected by the customer. Those criteria can be stored in a cookie. Frequently, the cookie contains merely a session ID. A session ID is a unique character string, independent of the IP address, that uniquely identifies the particular client machine. In such a case, the Web site operator may store on its own server the actual information of interest associated with that session ID and retrieve that information when it receives a request containing a cookie bearing that particular session ID. Every computing device that communicates via the Internet, including client machines and servers, is assigned a unique IP (Internet Protocol) address. Client machines that have a direct connection to the Internet as well as most servers typically have a permanent IP address. Client machines that connect to the Internet through an ISP, however, commonly are assigned a new IP address by the ISP, termed a dynamic address, each time they log on to the Internet. In either scheme, the IP address uniquely identifies a machine, rather than the particular individual.
Persons of skill in these arts will recognize that other mechanisms for storing state data are known. However, the use of cookies is probably the most ubiquitous of the various mechanism in use today.
Computers have become so commonplace that it is not unusual for a single individual to have several computing devices from which that individual normally accesses the Internet. This is particular true in light of the recent proliferation of portable, wireless computing devices that are designed to connect to the Internet. For instance, it would not be uncommon for a single individual to have a desktop computer at home, a second desktop computer at work, a portable notebook computer, a wireless palm top computing device, and an Internet-enabled cellular telephone, all of which are regularly used to access content via the Internet.
Since cookies are stored locally at each client machine, each time an operator visits a Web site from a different machine, a new cookie must be generated by the server and sent to the new client machine. Accordingly, the user must re-enter whatever information is required the first time he access a particular Web site from a new client machine. Even when the cookie contains only a session ID, the server must generate a new cookie for each new machine. This is because the session ID identifies the machine, not the individual.
Further, cookies may be revised or otherwise updated periodically. For instance, a Web site server may detect patterns in the Web surfing habits of the individual and create cookies that the server can use to improve the user's surfing experience through that Web site. Again, however, the cookies are associated with a machine, not an individual. Therefore, whenever the individual accesses the Web site from a different machine, the cookies at that machine may be different from the cookies stored at the other machine, thus detracting from the user's Web surfing experience.
Accordingly, it is object of the present invention to provide an improved method and apparatus for Web browsing.
It is a further object of the present invention to provide a method and apparatus for synchronizing cookies across a plurality of client machines.